/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package transactions;

import data.AskerDO;
import data.AskerData;
import utils.Transaction;

/**
 *
 * @author Tiago
 */
public class Asker {
    
   
    
   static public boolean[] confereAsker(String nome_empresa, String CNPJ,
           String ddd,String tel,String endereco,String nome_contato,
           String sobrenome_contato,String email_contato, String confirma_email,
           String senha, String confirma_senha) throws Exception{
       
       //comeca funcao
       boolean[] resp = new boolean[14];  //uma posicao para cada string + paridade
       
       for(int i=0;i<resp.length;i++){
           resp[i]=false;      //assume tudo correto antes de conferir
       }
       if(nome_empresa.isEmpty()){ //nome da empresa nao pode ser nulo
           resp[0]=true;
           resp[1]=true;           
       }
       if(CNPJ.length()!=14){   //CNPJ deve ter 14 caracteres
           resp[0]=true;
           resp[2]=true;           
       }
       
       if(ddd.length()!=2){     //ddd deve ter 2 digitos
           resp[0]=true;
           resp[12]=true;           
       }
       
       if(tel.length()!=8){    //tel deve ter 8 digitos
           resp[0]=true;
           resp[3]=true;           
       }
       
       if(endereco.isEmpty()){ //endereco nao pode ser vazio
           resp[0]=true;
           resp[4]=true;           
       }
       
       if(nome_contato.isEmpty()){ //nome_contato nao pode ser vazio
           resp[0]=true;
           resp[5]=true;           
       }
       
       if(sobrenome_contato.isEmpty()){ //sobrenome_contato nao pode ser vazio
           resp[0]=true;
           resp[6]=true;           
       }
       
       if(email_contato.isEmpty()){ //email_contato nao pode ser vazio
           resp[0]=true;
           resp[7]=true;           
       }
       
       if(senha.isEmpty()){         //senha nao deve ser vazia
           resp[0]=true;
           resp[8]=true;           
       }
       
       if(!senha.equals(confirma_senha)){  //ve se as senhas sao iguais
           resp[0]=true;
           resp[9]=true;           
       }
       
       if(!email_contato.equals(confirma_email)){  //ve se os e-mails sao iguais
           resp[0]=true;
           resp[10]=true;                    
       }
       
       if(!email_contato.contains("@")){   //ve se email contem @
           resp[0]=true;
           resp[11]=true;           
       }
       
       if(!confereEmail(email_contato)){
           resp[0]=true;
           resp[13]=true;
       }
       
      
        return resp;
    }
    
   
   
   public boolean incluir (AskerDO asker) throws Exception{    

     // efetuando a transacao
     Transaction tr = null;
     try {

       tr = new Transaction();
     } catch (Exception e){
         e.printStackTrace();
     }
     if (tr !=null){
         try {
            AskerData adata = new AskerData();
            adata.incluir(asker, tr);
            tr.commit();
            return true;
       
        } catch(Exception e) {
              tr.rollback();
              System.out.println("erro ao incluir " + asker.getNome_empresa());
              e.printStackTrace();
        }
        
        } // incluir
     return false;
   }
   
   public AskerDO buscar (String email,String senha) throws Exception{    

     // efetuando a transacao
     Transaction tr = new Transaction();
     
         try {
            AskerData adata = new AskerData();
            AskerDO contato = adata.buscar(email,senha, tr);
            tr.commit();
            return contato;
       
             } catch(Exception e) {
              tr.rollback();
              e.printStackTrace();
              System.out.println("erro ao buscar" + email);      
        
            } // incluir
            return null;
    }
   
   public static boolean confereEmail (String email) throws Exception{    

     // efetuando a transacao
     Transaction tr = new Transaction();
     
         try {
            AskerData adata = new AskerData();
            boolean available;
            available = adata.confereEmail(email, tr);
            tr.commit();
            return available;
       
             } catch(Exception e) {
              tr.rollback();
              e.printStackTrace();
              System.out.println("erro ao buscar" + email);      
        
            } // incluir
         return false;
    }
   
   public boolean editar (AskerDO asker, int id) throws Exception{    

     // efetuando a transacao
     Transaction tr = new Transaction();
     if (tr !=null){
         try {
            AskerData adata = new AskerData();
            adata.editar(asker, tr);
            tr.commit();
            return true;
       
        } catch(Exception e) {
              tr.rollback();
              System.out.println("erro ao incluir " + asker.getNome_empresa());
              e.printStackTrace();
        }
        
        } // incluir
     return false;
   }
   
  }